﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QUAN_LY_MUON_TRA_SACH
{
    public partial class frmtrasach : Form
    {
        public frmtrasach()
        {
            InitializeComponent();
        }

        private void frmtrasach_Load(object sender, EventArgs e)
        {
            try
            {
                //load du lieu len cbo mathe
                cbomathe.Enabled = true;
                DataTable bang = new DataTable();
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select mathe,hten_dg from the_doc_gia", Connection.sqlConnection);
                sqlDataAdapter.Fill(bang);
                cbomathe.DataSource = bang;
                cbomathe.ValueMember = "mathe";
                sqlDataAdapter.Dispose();
            }
            catch(Exception ex)
            {
                MessageBox.Show("Lỗi: "+ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        private void cbomathe_ValueChanged(object sender, EventArgs e)
        {
            //load du lieu le datagirdview
            DataTable bangsachmuon = new DataTable();
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select b.stt_phieu,b.mathe,hten_dg,d.isbn,stt_cuon,tuasach,lan_gia_han,ngay_gio_muon,ngay_het_han,ghi_chu from the_doc_gia a,phieu_muon b,gom_cuon c,dau_sach d where a.mathe=b.mathe and b.stt_phieu=c.stt_phieu and c.isbn=d.isbn and ngay_gio_tra is null and b.mathe='" + cbomathe.Text + "' order by b.stt_phieu asc", Connection.sqlConnection);
            sqlDataAdapter.Fill(bangsachmuon);
            this.dataGridView1.DataSource = bangsachmuon;
            this.dataGridView1.ClearSelection();
        }

        private void btnthoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
            dataGridView1.ClearSelection();
        }

        private void btntrasach_Click(object sender, EventArgs e)
        {
            int dem = 0;
            int max = 0;
            try
            {
                int test = 0;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        test = Convert.ToInt32(row.Cells[1].Value);
                        break;
                    }
                }
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        if (Convert.ToInt32(row.Cells[1].Value) != test)
                        {
                            MessageBox.Show("Bạn chỉ được gia hạn cho từng đọc giả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            this.cbomathe_ValueChanged(sender, e);
                            return;
                        }
                    }
                }
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        int stt_phieu = Convert.ToInt32(row.Cells[1].Value);
                        string ISBN = row.Cells[4].Value.ToString();
                        int stt_cuon = Convert.ToInt32(row.Cells[5].Value);
                        SqlCommand lenh = new SqlCommand("update gom_cuon set ngay_gio_tra='"+DateTime.Now+"' where stt_phieu="+stt_phieu+" and ISBN=N'"+ISBN+"' and stt_cuon="+stt_cuon, Connection.sqlConnection);
                        int n = lenh.ExecuteNonQuery();

                        lenh=new SqlCommand("select datediff(day,ngay_het_han,ngay_gio_tra) from gom_cuon where ngay_gio_tra>ngay_het_han and ghi_chu is null and "+"stt_phieu="+stt_phieu+" and ISBN=N'"+ISBN+"' and stt_cuon="+stt_cuon,Connection.sqlConnection);
                        n= Convert.ToInt32(lenh.ExecuteScalar());

                        lenh = new SqlCommand("update gom_cuon set ghi_chu=N'trả trễ hạn "+n+" ngày' where ngay_het_han<ngay_gio_tra and ghi_chu is null and "+"stt_phieu="+stt_phieu+" and ISBN=N'"+ISBN+"' and stt_cuon="+stt_cuon,Connection.sqlConnection);
                        lenh.ExecuteNonQuery();

                        if (n > max) max = n;
                        dem++;
                    }
                }
                if (dem > 0 && max == 0)
                {
                    MessageBox.Show("Đã ghi nhận trả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    btninphieu.Enabled = true;
                }
                else if (dem > 0 && max > 0)
                {
                    if (MessageBox.Show("Đọc giả trả trễ hạn " + max + " ngày!\n Lập phiếu phạt cho đọc giả?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        SqlCommand lenh = new SqlCommand("update the_doc_gia set ttrangthe=N'bị khóa' where mathe='"+cbomathe.Text+"' and ttrangthe=N'đang hoạt động'",Connection.sqlConnection);
                        lenh.ExecuteNonQuery();
                        frmphatdocgia Frmphatdocgia = new frmphatdocgia();
                        Frmphatdocgia.cbomathe.Text = cbomathe.Text;
                        Frmphatdocgia.cadngaylap.Text = DateTime.Today.ToString();
                        Frmphatdocgia.txtsotien.Text = Convert.ToString(max * 1000);
                        Frmphatdocgia.txtlydo.Text = "trả trễ hạn " + max + " ngày";
                        Frmphatdocgia.btnluu_Click(sender, e);
                        btninphieu.Enabled = true;
                    }

                }
                else
                    MessageBox.Show("Bạn chưa chọn sách để trả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.cbomathe_ValueChanged(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi: " + ex.Message);
            }
        }
        string sachhetlangiahan = null;
        string sachkoduocgiahan = null;
        private void btngiahan_Click(object sender, EventArgs e)
        {
            int dem = 0;
            string tuasach = null;
            try
            {
                int test = 0;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        test = Convert.ToInt32(row.Cells[1].Value);
                        break;
                    }
                }
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        if (Convert.ToInt32(row.Cells[1].Value) != test)
                        {
                            MessageBox.Show("Bạn chỉ được gia hạn cho từng đọc giả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            this.cbomathe_ValueChanged(sender,e);
                            return;
                        }
                    }
                }
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value) && (Convert.ToDateTime(row.Cells[9].Value) < Convert.ToDateTime(DateTime.Today.ToShortDateString())))
                    {
                        row.Cells[0].Value = false;
                        sachkoduocgiahan += "- " + Convert.ToString(row.Cells[6].Value) + "\n";
                        dem++;
                    }
                }
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value) && (Convert.ToDateTime(row.Cells[9].Value) >= Convert.ToDateTime(DateTime.Today.ToShortDateString())))
                    {
                        int stt_phieu = Convert.ToInt32(row.Cells[1].Value);
                        string ISBN = row.Cells[4].Value.ToString();
                        int stt_cuon = Convert.ToInt32(row.Cells[5].Value);
                        tuasach = Convert.ToString(row.Cells[6].Value);
                        row.Cells[0].Value = false;
                        SqlCommand lenh = new SqlCommand("update gom_cuon set lan_gia_han=lan_gia_han+1,ngay_het_han=dateadd(day,7,ngay_het_han) where stt_phieu=" + stt_phieu + " and ISBN=N'" + ISBN + "' and stt_cuon=" + stt_cuon, Connection.sqlConnection);
                        int n = lenh.ExecuteNonQuery();
                        dem++;
                    }
                }
                if (sachkoduocgiahan == null && sachhetlangiahan == null && dem > 0)
                    MessageBox.Show("Gia hạn thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else if (sachkoduocgiahan != null && sachhetlangiahan != null && dem > 0)
                {
                    MessageBox.Show("Đã gia hạn ngoại trừ các quyển: \n" + sachkoduocgiahan + " Lý do: đã trễ hạn trả!\n" + sachhetlangiahan + "Lý do: đã hết số lần gia hạn!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else if (sachkoduocgiahan != null && sachhetlangiahan != null && dem == 0)
                {
                    MessageBox.Show("Đã gia hạn ngoại trừ các quyển: \n" + sachkoduocgiahan + " Lý do: đã trễ hạn trả!\n" + sachhetlangiahan + "Lý do: đã hết số lần gia hạn!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else if (sachkoduocgiahan != null && sachhetlangiahan == null && dem == 0)
                {
                    MessageBox.Show("Gia hạn thất bại: \n" + sachkoduocgiahan + "Lý do: đã trễ hạn trả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else if (sachkoduocgiahan != null && sachhetlangiahan == null && dem > 0)
                {
                    MessageBox.Show("Đã gia hạn ngoại trừ các quyển: \n" + sachkoduocgiahan + " Lý do: đã trễ hạn trả!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else if (sachkoduocgiahan == null && sachhetlangiahan != null && dem > 0)
                {
                    MessageBox.Show("Đã gia hạn ngoại trừ các quyển: \n" + sachhetlangiahan + "Lý do: đã hết số lần gia hạn!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else if (sachkoduocgiahan == null && sachhetlangiahan != null && dem == 0)
                {
                    MessageBox.Show("Gia hạn thất bại: \n" + sachhetlangiahan + "Lý do: đã hết số lần gia hạn!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    sachkoduocgiahan = null;
                }
                else
                    MessageBox.Show("Bạn chưa chọn sách để gia hạn!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                this.cbomathe_ValueChanged(sender, e);
            }
            catch (Exception ex)
            {
                sachhetlangiahan += "- " + tuasach + "\n";
                btngiahan_Click(sender, e);
                sachhetlangiahan = null;
            }
        }

        private void btnmatsach_Click(object sender, EventArgs e)
        {
            int dem = 0;
            
            try
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        int stt_phieu = Convert.ToInt32(row.Cells[1].Value);
                        string ISBN = row.Cells[4].Value.ToString();
                        int stt_cuon = Convert.ToInt32(row.Cells[5].Value);
                        SqlCommand lenh = new SqlCommand("update gom_cuon set ghi_chu=N'mất sách' where " + "stt_phieu=" + stt_phieu + " and ISBN=N'" + ISBN + "' and stt_cuon=" + stt_cuon, Connection.sqlConnection);
                        lenh.ExecuteNonQuery();

                        lenh = new SqlCommand("update gom_cuon set ngay_gio_tra='" + DateTime.Now + "' where stt_phieu=" + stt_phieu + " and ISBN=N'" + ISBN + "' and stt_cuon=" + stt_cuon, Connection.sqlConnection);
                        lenh.ExecuteNonQuery();
                        
                        dem++;
                    }
                }
                if (dem > 0)
                {
                    if (MessageBox.Show("Đọc giả làm mất sách! \n Lập phiếu phạt cho đọc giả?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        frmphatdocgia Frmphatdocgia = new frmphatdocgia();
                        Frmphatdocgia.cbomathe.Text = cbomathe.Text;
                        Frmphatdocgia.cadngaylap.Text = DateTime.Today.ToString();
                        Frmphatdocgia.txtlydo.Text = "mất sách";
                        Frmphatdocgia.ShowDialog();
                    }

                }
                else
                    MessageBox.Show("Bạn chưa chọn cuốn sách nào bị mất!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.cbomathe_ValueChanged(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi: " + ex.Message);
            }
        }

        private void btninphieu_Click(object sender, EventArgs e)
        {
            mathe = cbomathe.Text;
            frmphieu_muon_moi phieumuon = new frmphieu_muon_moi();
            phieumuon.ShowDialog();
            btninphieu.Enabled = false;
        }
    }
}
